﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Empresas__popup_eppUploadNotasEmitidas : PageBase 
{
    protected int idcontratoNFemitida = 0;
    private const string dbPath = "arq/";

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            trResultado.Visible = false;
            EditaParametros();
        }

        if (Request.QueryString["IdNFEmitida"] != null)
            idcontratoNFemitida = int.Parse(Request.QueryString["IdNFEmitida"].ToString());

        if (!IsPostBack)
        {
            if (Request.QueryString["IdNFEmitida"] != null)
                PreencherDados(int.Parse(Request.QueryString["IdNFEmitida"].ToString()));
        }
    }

    #region Eventos
    protected void btnGravar_Click(object sender, EventArgs e)
    {
        try
        {
            BindValidResults();
        }
        catch (Exception ex)
        {
            lblResultado.Text = ex.Message;
        }
    }

    protected void btnFechar_Click(object sender, EventArgs e)
    {
        ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind();", true);
    }

    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        //if (e.Argument == "RebindContrato")
        //{
        //    RadGrid2.MasterTableView.SortExpressions.Clear();
        //    RadGrid2.MasterTableView.GroupByExpressions.Clear();
        //    RadGrid2.MasterTableView.CurrentPageIndex = RadGrid2.MasterTableView.PageCount - 1;
        //    RadGrid2.Rebind();
        //    CarregarDadosContrato();
        //}
    }
    #endregion

    #region Metodos
    private void BindValidResults()
    {
        if ((RadUpload1.UploadedFiles.Count > 0) || (lblArquivo.Text != string.Empty))
        {
            string nameFile = Salvar();

            foreach (UploadedFile validFile in RadUpload1.UploadedFiles)
            {
                string targetFolder = Server.MapPath("~/Arq");
                validFile.SaveAs(Path.Combine(targetFolder, nameFile), true);
            }

            labelNoResults.Visible = false;
            repeaterResults.Visible = true;
            repeaterResults.DataSource = RadUpload1.UploadedFiles;
            repeaterResults.DataBind();
        }
        else
        {
            labelNoResults.Visible = true;
            repeaterResults.Visible = false;
        }

        ExibeResultado();
    }

    private void OcultaCampos(bool oculta)
    {
        trResultado.Visible = !oculta;
        btnGravar.Visible = !oculta;
    }

    private void ExibeResultado()
    {
        trSeleciona.Visible = false;
        trResultado.Visible = true;
        trMsg.Visible = false;
        btnGravar.Visible = false;

        trContrato.Visible = false;
        trAno.Visible = false;
        trMes.Visible = false;
        trNumNota.Visible = false;
        trDataEmissao.Visible = false;
        trLocalidade.Visible = false;
        trComentarios.Visible = false;
    }

    private void PreencherDados(int _idContratoNFEmitida)
    {
        ContratoNotasEmitidas nfemitidas = new ContratoNotasEmitidas(_idContratoNFEmitida, false, false);
        RadComboBoxItem itemContrato;
        RadComboBoxItem itemAno;
        RadComboBoxItem itemMes;
        RadComboBoxItem itemLocalidade;

        itemContrato = rcbContrato.FindItemByValue(nfemitidas.Contrato.IdContrato.ToString());
        itemAno = rcbAno.Items.FindItemByValue(nfemitidas.DtPagamento.Value.Year.ToString());
        itemMes = rcbMes.Items.FindItemByValue(nfemitidas.DtPagamento.Value.Month.ToString());
        itemLocalidade = rcbLocalidade.FindItemByValue(nfemitidas.Localidade.IdCidade.ToString());

        rcbContrato.SelectedIndex = itemContrato.Index;
        if (itemAno != null)
            rcbAno.SelectedIndex = itemAno.Index;
        if (itemMes != null)
            rcbMes.SelectedIndex = itemMes.Index;
        txtNumNota.Text = nfemitidas.NrNF;
        rdpDataEmissao.SelectedDate = nfemitidas.DtEmissao;
        if (itemLocalidade != null)
            rcbLocalidade.SelectedIndex = itemLocalidade.Index;
        txtComentarios.Text = nfemitidas.Obs;

        if (nfemitidas.Path != null)
        {
            System.IO.FileInfo fileInfo = new FileInfo(nfemitidas.Path);
            lblArquivo.Text = fileInfo.Name;
        }
        else
        {
            lblArquivo.Text = "";
        }
    }

    private void EditaParametros()
    {
        lblTipo.Text = "Notas Emitidas";

        OrganizacaoPatrocinadorPrestador organRelacao = new OrganizacaoPatrocinadorPrestador(IdPatrocinador, IdPrestador);

        Contrato contrato = new Contrato();
        rcbContrato.DataSource = contrato.SelectContratoVigencia(organRelacao.IdOrganizacaoRelacao);
        rcbContrato.DataBind();

        ContratoNotasEmitidas nfemitidas = new ContratoNotasEmitidas();
        rcbLocalidade.DataSource = nfemitidas.CarregarLocalidadesNota(IdPrestador);
        rcbLocalidade.DataBind();

        // seta o tamanho máximo do arquivo
        TipoDocumento tipodocto = new TipoDocumento((int)TipoDocumento.TipoDocto.Notas_Fiscais_Emitidas);
        RadUpload1.MaxFileSize = tipodocto.TamanhoDocumento;
    }

    protected string Salvar()
    {
        ContratoNotasEmitidas nfemitidas = new ContratoNotasEmitidas();

        nfemitidas.IdContratoNFEmitida = idcontratoNFemitida;
        if (rcbContrato.SelectedValue != string.Empty)
            nfemitidas.Contrato = new Contrato(int.Parse(rcbContrato.SelectedValue));
        nfemitidas.NrNF = txtNumNota.Text.Trim();

        if (rcbLocalidade.SelectedValue != string.Empty)
        {
            nfemitidas.Localidade = new Cidade();
            nfemitidas.Localidade.IdCidade = int.Parse(rcbLocalidade.SelectedValue);
        }

        nfemitidas.DtEmissao = rdpDataEmissao.SelectedDate;
        if ((rcbAno.SelectedValue != string.Empty) && (rcbMes.SelectedValue != string.Empty))
            nfemitidas.DtPagamento = DateTime.Parse("01/" + rcbMes.SelectedValue + "/" + rcbAno.SelectedValue);
        else
            nfemitidas.DtPagamento = null;

        nfemitidas.Obs = txtComentarios.Text.Trim();
        nfemitidas.Path = dbPath;

        nfemitidas.Salvar();

        FileInfo _fileInfo = new FileInfo(nfemitidas.Path);

        return _fileInfo.Name;
    }
    #endregion
}
